package com.xique.door.command.impl;

import com.xique.door.bean.domain.AccessDevice;
import com.xique.door.bean.domain.DAdvert;
import com.xique.door.command.IAdvertCommandBizService;
import com.xique.door.device.freeview.service.biz.FreeviewCommandBizService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.stream.Collectors;

/**
 * @author: caogq
 * @Date: 2022/3/13 13:13
 * @Description:
 */
@Service
public class AdvertCommandBizServiceImpl implements IAdvertCommandBizService {

    @Autowired
    private FreeviewCommandBizService freeviewCommandBizService;

    /**
     * @param advert
     * @description: 下发设备到广告
     * @author caogq
     * @date: 2022/3/13 13:17
     * @Param
     */
    @Override
    public Object downAdvert(DAdvert advert, List<String> devSns) {
        /** http
         * 0：新增广告
         * 1：删除广告（设备删除成功，
         * 并将结果上报给平台后，下
         * 一次的广告公告列表中将不
         * 会有此删除成功的广告公告
         * 文件）
         * 2：已同步（平台记录的此广
         * 告已经同步，如果设备无此
         * 广告，仍需要重新处理
         * mqtt
         * 1：更新（包括添加、删除、
         * 更新，设备收到通知后要调
         * 用获取广告公告接口）
         * 2：清空（设备直接清空，
         * 不需要调用获取广告公告
         * 的接口）
         *
         */
        return freeviewCommandBizService.downAdvertisements(advert,devSns,1);
    }

    /**
     * @param advert
     * @description: 删除广告
     * @author caogq
     * @date: 2022/3/13 13:17
     * @Param
     */
    @Override
    public Object deleteAdvert(DAdvert advert, List<String> devSns) {
        return freeviewCommandBizService.downAdvertisements(advert, devSns,3);
    }

    /**
     * @param advert
     * @param accessDevices
     * @description: 清空广告
     * @author caogq
     * @date: 2022/3/13 13:17
     * @Param
     */
    @Override
    public Object clearAdvert(DAdvert advert, List<AccessDevice> accessDevices) {
        List<String> devSns = accessDevices.stream().map(AccessDevice::getDevSn).collect(Collectors.toList());
        return freeviewCommandBizService.downAdvertisements(advert, devSns,2);
    }
}
